package com.zxl.designpattern.structure.flyweight;

/**
 * @author zxl
 * @description 享元模式测试类
 * @version 1.0
 * @date 2024/1/15
 */
public class Test {
    public static void main(String[] args) {
        // 创建文档
        Document document = new Document();

        // 获取享元对象
        TextFormat bold = FormatFactory.getFormat("bold");
        TextFormat italic = FormatFactory.getFormat("italic");

        // 应用格式到文本
        document.addFormattedText("标题", bold);
        document.addFormattedText("副标题", italic);

        // 尝试重复获取相同格式
        TextFormat anotherBold = FormatFactory.getFormat("bold");
        System.out.println("粗体格式实例是否相同: " + (bold == anotherBold));


        // Integer就使用了享元模式。其中-127到128是提前创建好的享元对象，存在享元池中。
        // IntegerCache是Integer的内部类，用于缓存Integer对象。静态代码块初始化享元池
        // Integer.valueOf()方法会先检查是否在缓存池中，如果在则返回缓存中的对象，否则创建新对象
    }
}